# -*- coding: utf-8 -*-
# @Author: felix

"""

在测试过程中偶然需要从数据库获取数据进行测试或者通过数据库的数据进行断言，这时候既要连接到数
据库。
Python当中利用PySQL进行连接
常用方法：
- cursor(): 创建游标对象
- close(): 关闭游标对象
- fetchone(): 得到结果集的下一行
- fetchmany([size = cursor.arraysize]):得到结果集的下几行
- fetchall():得到结果集中剩下的所有行
- excute(sql[,args]): 执行一个数据库查询或命令

 executemany(sql,args):执行多个数据库查询或命令
安装：pip install pymysql


"""

import pymysql
from pymysql import cursors
from PytestApi.apirun_v8.core.globalContext import g_context

# TODO 1. 配置数据库连接信息



HcMysql = {
    "host" :'shop-xo.hctestedu.com',  # 数据库地址
    "port": 3306,  # 端口号
    "user": "api_test",   # 数据库用户名
    "password": "Aa9999!", # 数据库密码
    "db": "shopxo_hctested",  # 数据库名称
    "cursorclass": cursors.DictCursor  # 以字典的格式显示数据
}


thirdDb = {
    "host" :'172.20.53.190',  # 数据库地址
    "port": 13306,  # 端口号
    "user": "root",   # 数据库用户名
    "password": "ecdev@123", # 数据库密码
    "db": "3rd_kfc_test_sit",  # 数据库名称
    "cursorclass": cursors.DictCursor  # 以字典的格式显示数据
}

# TODO 2 ，连接数据库

connection_info = pymysql.connect(**thirdDb)


# TODO 3， 创建游标对象，

cursor = connection_info.cursor()

# TODO 4,编写sql

# sql = 'select * from sxo_user where username = "felix_test" '

# sql = 'select id,status,fsm_num from torder where id = "8056260164661591332" '

# sql = 'select * from tstoremap where storeCode = "SHA186" and channel = "MEITUAN"'


# sql = 'select * from tstoremap where storeCode = %s and channel = %s '


sql = "select id,storeCode from tstoremap where storeCode = %(storeCode)s"

# TODO 5，执行sql
cursor.execute(sql,{"storeCode":"SHA186","channel":"MEITUAN"})

# TODO 6， 获取所有的数据
rs = cursor.fetchall()
print("rs:",rs)

# TODO 7 关闭数据库联系
cursor.close()

datalist = {
    "引用变量" : "id,storeCode"
}

var_names = datalist["引用变量"].split(",")
print("v:",var_names)
result = {}


for i, data in enumerate(rs, start=1):
    print(i,data)
    for j, value in enumerate(var_names):
        print(j,value)
        result[f'{var_names[j]}_{i}'] = data.get(var_names[j])  # 根据变量名称找读取出来的内容

g_context().set_by_dict(result)
g = g_context().show_dict()
print("g:",g)